package com.roads.plan.service;

import com.roads.plan.domain.PlanProfileYearDetail;
import com.roads.plan.domain.PlanProfileYearMaster;
import com.roads.workflow.domain.WorkflowTaskDelivery;

import java.util.List;

/**
 * 年形象计划Service接口
 *
 * @author nhp
 * @date 2024-03-04
 */
public interface IPlanProfileYearService {

    /**
     * 根据主键ID查询主表详情
     *
     * @param id 年形象计划主表主键
     * @return 年形象计划
     */
    PlanProfileYearMaster getMasterById(Integer id);

    /**
     * 根据主键ID查询明细详情
     *
     * @param id 年形象计划明细主键
     * @return 年形象计划
     */
    PlanProfileYearDetail getDetailById(Integer id);

    /**
     * 查询列表
     *
     * @param model 年形象计划主表
     * @return 年形象计划集合
     */
    List<PlanProfileYearMaster> selectMasterList(PlanProfileYearMaster model);

    /**
     * 查询详细列表
     *
     * @param model 年形象计划明细
     * @return 年形象计划明细集合
     */
    List<PlanProfileYearDetail> selectDetailList(PlanProfileYearDetail model);

    /**
     * 校验年形象计划是否唯一
     *
     * @param model 年形象计划
     * @return 结果
     */
    String checkUnique(PlanProfileYearMaster model);

    /**
     * 批量锁定
     *
     * @param ids 主键集合
     * @return 结果
     */
    int lock(Integer[] ids);

    /**
     * 解锁
     *
     * @param master 主表
     * @param id 主键
     * @return 结果
     */
    int unlock(PlanProfileYearMaster master, Integer id);

    /**
     * 新增
     *
     * @param model 年形象计划
     * @return 结果
     */
    int insert(PlanProfileYearMaster model);

    /**
     * 批量删除
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteByIds(Integer[] ids);

    /**
     * 修改明细
     *
     * @param model 年形象计划明细
     * @return 结果
     */
    int updateDetail(PlanProfileYearDetail model);

    /**
     * 传送
     *
     * @param delivery 传送对象
     * @return 结果
     */
    int delivery(WorkflowTaskDelivery delivery);

}
